44-Quiz feature using dictionaries.py


Sign up Free. Don't forget to check out our challenges, lessons, solve and learn series and more ...


Code Snippet

#Challenge:
#See if you can add more questions, add a high score, grade or percentage to thsi program!


#------------------------------------------------
#written by www.teachingcomputing.com

#allow for a random 'key' in the dictionary to be accessed
import random

#the dictionary that contains the questions(which are the key) and the answers
my_dict =   {
                "The last book (about the end times) in the Bible?" : "Revelation",
                "Animal that starts with letter M and ends with E" : "Moose",
                "7-bit text encoding standard, starting with A" : "ascii",
                "16-bit text encoding standard, starting with U" : "unicode",
                "Name of the Lion in Narnia" : "Aslan",
                "8 bits make a..." : "byte",
                "1024 bytes make a..." : "kilobyte",
                "Picture Element. The smallest component of a bitmapped image" : "pixel",
                "What's at the end of life and the beginning of everything?" : "e",
                "First name of the chap who cretaed facebook" : "Mark",
                "Another word for loops beginning with I" : "Iteration"
            }

#Introductory message
print("Generally Bizarre Quiz")
print("=======================")

#When this variable is set to 'False', then this quiz will end!
playing = True

#While the game is running this variable is always 'True'
while playing == True:

    #Here we initialise the variable score: set the score to 0
    score = 0

    #gets the number of questions the player wants to answer
    num = int(input("\nHow many questions would you like: "))

    #loop the correct number of times
    for i in range(num):

        #the question is one of the dictionary keys, picked at random
        question = (random.choice( list(my_dict.keys())))
        #the answer is the string mapped to the question key
        answer = my_dict[question]

        #print the question, along with the question number
        print("\nQuestion " + str(i+1) )
        print(question  + "?")

        #get the user's answer attempt
        guess = input("> ")

        #if their guess is the same as the answer
        if guess.lower() == answer.lower():
            #add 1 to the score and print a message
            print("Correct!")
            score += 1
        else:
            print("Nope!")

    #after the quiz, print their final score  
    print("\nYour final score was " + str(score))

    #store the user's input...
    again = input("Enter any key to play again, or 'q' to quit.")

    #... and quit if they types 'q'
    if again.lower() == 'q':
        playing = False
                    

Try it yourself